package master;

import java.util.*;

/**
 *
 * 合并区间
 *
 * @author chenyw
 * @date 2022/7/28 10:08
 */
public class M56merge {
    public int[][] merge(int[][] intervals) {
        if (intervals.length == 0) {
            return new int[0][2];
        }
        Arrays.sort(intervals, new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
                return o1[0] - o2[0];
            }
        });
        List<List<Integer>> res = new ArrayList<List<Integer>>();
        List<Integer> list = new ArrayList<>();
        int i = 1;
        int pre = intervals[0][1];
        list.add(intervals[0][0]);
        list.add(intervals[0][1]);
        while (i < intervals.length) {
            int[] tmp = intervals[i];
            if (tmp[0] <= pre) {
                if (tmp[1] >pre) {
                    list.set(1, tmp[1]);
                    pre = tmp[1];
                }
            } else {
                res.add(new ArrayList<>(list));
                list = new ArrayList<>();
                list.add(tmp[0]);
                list.add(tmp[1]);
                pre = tmp[1];
            }
            i++;
        }
        res.add(new ArrayList<>(list));
//        int len = res.size();
//        int[][] ans = new int[len][2];
//        for (int j = 0; j < len; j++) {
//            ans[j][0] = res.get(j).get(0);
//            ans[j][1] = res.get(j).get(1);
//        }
//        return ans;

        //类型错误，List<int[]>这样的类型才可以直接转
        return res.toArray(new int[res.size()][2]);
    }
}
